package com.mjt.admin.controller;

import com.mjt.admin.model.RespBean;
import com.mjt.admin.model.RespDataBean;
import com.mjt.admin.pojo.User;
import com.mjt.admin.query.UserQuery;
import com.mjt.admin.service.IUserService;

import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import java.security.Principal;


/**
 * <p>
 * 用户表 前端控制器
 * </p>
 *
 * @author 莫某人
 * @since 2021-10-27
 */
@Controller
@RequestMapping("/user")
public class UserController {

    @Resource
    private IUserService userService;




    /**
     * @description 删除用户
     * @author 莫某人
     * @date 15:12 2021/10/28
     * @param ids
     * @return {@link }
     **/
    @RequestMapping("delete")
    @ResponseBody
    @PreAuthorize("hasAnyAuthority('101006')")
    public RespBean deleteUser(Integer[] ids){
        userService.deleteUsers(ids);
        return RespBean.success("删除成功");
    }




    /**
     * @description 修改用户
     * @author 莫某人
     * @date 15:12 2021/10/28
     * @param user
     * @return {@link }
     **/
    @RequestMapping("update")
    @ResponseBody
    @PreAuthorize("hasAnyAuthority('101005')")
    public RespBean update(User user){
        userService.updateUser(user);
        return RespBean.success("修改成功");
    }

    /**
     * @description 添加用户
     * @author 莫某人
     * @date 15:12 2021/10/28
     * @param user
     * @return {@link }
     **/
    @RequestMapping("save")
    @ResponseBody
    @PreAuthorize("hasAnyAuthority('101004')")

    public RespBean save(User user){


        userService.saveUser(user);

        return RespBean.success("添加成功");
    }




    /**
     * @description 查询用户列表
     * @author 莫某人
     * @date 14:27 2021/10/28
     * @param userQuery
     * @return {@link }
     **/
    @RequestMapping("/list")
    @PreAuthorize("hasAnyAuthority('101003')")
    @ResponseBody
    public RespDataBean<User> userList(UserQuery userQuery){
        return userService.userList(userQuery);
    }



    /**
     * @description
     * @author 莫某人
     * @date 14:19 2021/10/27
     * @param user
     * @return {@link }
     **/
    @RequestMapping("updateUserInfo")
    @ResponseBody
    public RespBean updateUserInfo(User user){
        //提交更新的数据
        userService.updateUserInfo(user);
        return RespBean.success("信息修改成功");
    }

    /**
     * @description 用户密码更新
     * @author 莫某人
     * @date 11:28 2021/10/27
     * @param oldPassword
     * @param newPassword
     * @param confirmPassword
     * @param principal
     * @return {@link }
     **/
    @RequestMapping("/updateUserPassword")
    @ResponseBody
    @PreAuthorize("hasAnyAuthority('101001')")
    public RespBean updateUserPassword(String oldPassword,
                                       String newPassword,
                                       String confirmPassword,
                                       Principal principal){//Principal封装了用户登录信息

            userService.updateUserPassword(principal.getName(),oldPassword,newPassword,confirmPassword);
            return RespBean.success("用户密码更新成功");
    }





    /**
     * @description 跳转到修改密码界面
     * @author 莫某人
     * @date 11:24 2021/10/27
     * @param
     * @return {@link }
     **/
    @RequestMapping("password")
    @PreAuthorize("hasAnyAuthority('101001')")
    public String password(){
        return "user/password";
    }

   /**
     * @description 跳转到信息修改页面
     * @author 莫某人
     * @date 14:14 2021/10/27
     * @param
     * @return {@link }
     **/
    @RequestMapping("setting")
    public String setting(){
        return "user/setting";
    }

   /**
     * @description 跳转到用户管理主页面
     * @author 莫某人
     * @date 11:33 2021/10/28
     * @param
     * @return {@link }
     **/
    /**
     * 用户管理主页
     * @return
     */
    @RequestMapping("index")
    @PreAuthorize("hasAnyAuthority('1010')")
    public String index(){
        return "user/user";
    }


    /**
     * @description 添加|修改用户页面
     * @author 莫某人
     * @date 15:01 2021/10/28
     * @param id
     * @param model
     * @return {@link }
     **/
    @RequestMapping("/addOrUpdateUserPage")
    @PreAuthorize("hasAnyAuthority('101004','101005')")
    public String addOrUpdateUserPage(Long id, Model model){
        if (id==null){
            //打开添加页面
            return "user/add_update";
        }else {
            //打开修改页面
            model.addAttribute("user",userService.getById(id));
            return "user/add_update";
        }
    }







}
